import { Context } from "../class/Context";
import { Debuff } from "../class/Effect";
import { Hurt } from "../class/Hurt";
import { Method } from "../class/Method";

/**
 * 弑神狂斩
 */
export class ShiShenKuangZhan extends Method {
    static methodName = "弑神狂斩"
    public CD: number = 35E3;
    public describe: string = "阿瑞斯光速使用剑进行连斩一共三段，对目标每次造成 60 + 60% （PA） 的物理伤害，最后一段给予重伤，对目标造成已损生命的百分之十四的伤害，同时每段伤害回复自身损失血量的百分之二（最后一段不回复）。";
    invoke(context: Context): void {
        const itid = context.nextParam();
        const it = this.masterRole.game.getRole(itid);
        const masterRole = this.masterRole;// 释放技能的人

        it.addEffectByClass(class extends Debuff {
            public sumTime: number = 3E3;
            public eachTime: number = 1E3;
            // 当前次数
            public index: number = 0;
            public invoke(): void {
                this.index += 1;
                const MA = Math.floor(masterRole.getMagicAttack() * 0.6) + 60;// 计算伤害
                // 前面两下
                if (this.index <= 2) {
                    this.masterRole.onHurt(masterRole, new Hurt(0, MA, 0));// 目标被伤害
                    masterRole.setHP(Math.floor(masterRole.getLossHP() * 0.02));//释放者回复 2% 
                } else { // 第三下
                    // 计算真实伤害
                    const TD = Math.floor(this.masterRole.getLossHP() * 0.08);
                    this.masterRole.onHurt(masterRole, new Hurt(0, MA, TD))
                }
            }

        })
    }

}